/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.going.vista;

import co.com.going.logica.ICiudadLogica;
import co.com.going.logica.IEscuelaLogica;
import co.com.going.modelo.Ciudad;
import co.com.going.modelo.Escuela;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;
import org.primefaces.component.selectonemenu.SelectOneMenu;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author Olguita
 */
@ManagedBean (name="VistaEscuela")
@RequestScoped
public class VistaEscuela {

    
    
    @EJB
    private IEscuelaLogica iEscuelaLogica;
    
    @EJB
    private ICiudadLogica iCiudadLogica;
    
    
    private InputText txtCodEscuela;
    private InputText txtNombreEscuela;
    private ArrayList<SelectItem> ciudades;
    private SelectOneMenu cmbCiudad;
    private CommandButton btnRegistrar;
    private CommandButton btnModificar;
    private CommandButton btnEliminar;
    private CommandButton btnLimpiar;
    private List<Escuela> listaEscuelas;
    private Escuela escuelaSeleccionada;
    
    
    
    public VistaEscuela() {
    }

    public IEscuelaLogica getiEscuelaLogica() {
        return iEscuelaLogica;
    }

    public void setiEscuelaLogica(IEscuelaLogica iEscuelaLogica) {
        this.iEscuelaLogica = iEscuelaLogica;
    }

    public ICiudadLogica getiCiudadLogica() {
        return iCiudadLogica;
    }

    public void setiCiudadLogica(ICiudadLogica iCiudadLogica) {
        this.iCiudadLogica = iCiudadLogica;
    }

    public InputText getTxtCodEscuela() {
        return txtCodEscuela;
    }

    public void setTxtCodEscuela(InputText txtCodEscuela) {
        this.txtCodEscuela = txtCodEscuela;
    }

    public InputText getTxtNombreEscuela() {
        return txtNombreEscuela;
    }

    public void setTxtNombreEscuela(InputText txtNombreEscuela) {
        this.txtNombreEscuela = txtNombreEscuela;
    }

    public ArrayList<SelectItem> getCiudades() {
       
        if(ciudades==null){
            
            try {
                ciudades = new ArrayList<>();
                List<Ciudad> lista=iCiudadLogica.ciudades();
                
                for (int i = 0; i <lista.size(); i++) {
                    
                    ciudades.add(new SelectItem(lista.get(i).getCodCiudad(), lista.get(i).getNombreCiudad()));
                    
                }
                
            } catch (Exception ex) {
                Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            }
            
        }
        
        return ciudades;
    }

    public void setCiudades(ArrayList<SelectItem> ciudades) {
        this.ciudades = ciudades;
    }

    public SelectOneMenu getCmbCiudad() {
        return cmbCiudad;
    }

    public void setCmbCiudad(SelectOneMenu cmbCiudad) {
        this.cmbCiudad = cmbCiudad;
    }

    public CommandButton getBtnRegistrar() {
        return btnRegistrar;
    }

    public void setBtnRegistrar(CommandButton btnRegistrar) {
        this.btnRegistrar = btnRegistrar;
    }

    public CommandButton getBtnModificar() {
        return btnModificar;
    }

    public void setBtnModificar(CommandButton btnModificar) {
        this.btnModificar = btnModificar;
    }

    public CommandButton getBtnEliminar() {
        return btnEliminar;
    }

    public void setBtnEliminar(CommandButton btnEliminar) {
        this.btnEliminar = btnEliminar;
    }

    public CommandButton getBtnLimpiar() {
        return btnLimpiar;
    }

    public void setBtnLimpiar(CommandButton btnLimpiar) {
        this.btnLimpiar = btnLimpiar;
    }

    public List<Escuela> getListaEscuelas() {
        
        try {
            
            listaEscuelas= iEscuelaLogica.escuelas();
            
        } catch (Exception ex) {
            Logger.getLogger(VistaEscuela.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return listaEscuelas;
    }

    public void setListaEscuelas(List<Escuela> listaEscuelas) {
        this.listaEscuelas = listaEscuelas;
    }

    public Escuela getEscuelaSeleccionada() {
        return escuelaSeleccionada;
    }

    public void setEscuelaSeleccionada(Escuela escuelaSeleccionada) {
        this.escuelaSeleccionada = escuelaSeleccionada;
    }
    
    
    public void seleccionar_Ciudad(SelectEvent event){
        
        Escuela escuela= (Escuela) event.getObject();
        
        txtCodEscuela.setValue(escuela.getCodEscuela());
        txtNombreEscuela.setValue(escuela.getNombreEscuela());
        cmbCiudad.setValue(escuela.getCodCiudadEscuela().getCodCiudad());
        txtCodEscuela.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnModificar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        
        
    }
    
    public void funcion_Registar(){
        
        try {
            Escuela escuela=new Escuela();
            
            escuela.setCodEscuela(Long.parseLong(txtCodEscuela.getValue().toString().trim()));
            escuela.setNombreEscuela(txtNombreEscuela.getValue().toString().trim().toUpperCase());
            Ciudad ciudad=iCiudadLogica.buscarPorId(Long.parseLong(cmbCiudad.getValue().toString()));
            escuela.setCodCiudadEscuela(ciudad);
            iEscuelaLogica.crearEscuela(escuela);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("La Escuela Fue Creada con Exito"));
            funcion_Limpiar();
            
        } catch (Exception ex) {
            Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
        }
        
        
    }
    
    public void funcion_Modificar(){
        
        try {
            Escuela escuela=new Escuela();
            
            escuela.setCodEscuela(Long.parseLong(txtCodEscuela.getValue().toString().trim()));
            escuela.setNombreEscuela(txtNombreEscuela.getValue().toString().trim().toUpperCase());
            Ciudad ciudad=iCiudadLogica.buscarPorId(Long.parseLong(cmbCiudad.getValue().toString()));
            escuela.setCodCiudadEscuela(ciudad);
            iEscuelaLogica.crearEscuela(escuela);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage("La Escuela Fue Modificada con Exito"));
            funcion_Limpiar();
            
        } catch (Exception ex) {
            Logger.getLogger(VistaCiudad.class.getName()).log(Level.SEVERE, null, ex);
            FacesContext.getCurrentInstance().addMessage("Mensaje", new FacesMessage(ex.getMessage()));
        }
        
    }
    
    public void funcion_Eliminar(){
        
        
    }
    
    public void funcion_Limpiar(){
        
        txtCodEscuela.setValue("");
        txtNombreEscuela.setValue("");
        txtCodEscuela.setDisabled(true);
        btnEliminar.setDisabled(false);
        btnRegistrar.setDisabled(true);
        btnModificar.setDisabled(false);
        btnLimpiar.setDisabled(true);
        cmbCiudad.setValue("");
        
        
    }
    
}
